export interface PageResponse<T> {
  /**
   * 分页数据集合
   */
  list: T[]

  /**
   * 数据总条数
   */
  total: number

  /**
   * 总页码数
   */
  pages: number
}

export interface HomeConfig {
  /**
   * 页面名称
   */
  pageName: string

  /**
   * 是否显示搜索框
   */
  search: boolean

  /**
   * 是否显示添加导图按钮
   */
  add: boolean

  /**
   * 是否显示列表/卡片切换组件
   */
  grid: boolean

  /**
   * 是否展示分享类型切换组件
   */
  shareType: boolean
}

export interface HomeConfigOptions {
  recents: HomeConfig

  sharing: HomeConfig

  trash: HomeConfig

  work: HomeConfig
}

export interface User {
  /**
   * 用户id
   */
  id: string

  /**
   * 用户名
   */
  username: string

  /**
   * 用户昵称
   */
  nickname: string

  /**
   * 电子邮箱
   */
  email?: string

  /**
   * 用户头像
   */
  avatar?: string

  /**
   * 个人简介
   */
  intro?: string
}

export interface Folder {
  /**
   * 文件夹主键
   */
  id: string

  /**
   * 文件夹名称
   */
  name: string

  /**
   * 父级文件夹id
   */
  parentId?: string

  /**
   * 是否被移动到回收站
   */
  deleteFlag: boolean

  /**
   * 创建时间
   */
  createTime: string

  /**
   * 更新时间
   */
  updateTime: string

  /**
   * 删除时间
   */
  deleteTime: string

  /**
   * 文件夹子目录个数
   */
  childFolderCount: number

  /**
   * 文件夹下思维导图个数
   */
  childMindCount: number
}

export interface Mind {
  /**
   * 导图主键
   */
  id: string

  /**
   * 导图名称
   */
  name: string

  /**
   * 所属文件夹id
   */
  folderId: string

  /**
   * 导图大小
   */
  size: number,

  /**
   * 是否被收藏 0 - 未收藏  1 - 已收藏
   */
  isCollected: 0 | 1

  /**
   * 是否被移动到回收站
   */
  deleteFlag: boolean

  /**
   * 是否被选中
   */
  selected?: boolean

  /**
   * 创建时间
   */
  createTime: string

  /**
   * 更新时间
   */
  updateTime: string

  /**
   * 删除时间
   */
  deleteTime: string

  /**
   * 封面图
   */
  coverImage?: string
}

export interface ShareMind {
  /**
   * 导图id
   */
  mindId: string

  /**
   * 分享时间
   */
  shareTime: string

  /**
   * 导图名称
   */
  mindName: string

  /**
   * 分享人id
   */
  sourceUserId: string

  /**
   * 被分享人id
   */
  targetUserId: string

  /**
   * 分享人昵称
   */
  sourceUserName: string

  /**
   * 分享人头像
   */
  sourceAvatar: string

  /**
   * 被分享人昵称
   */
  targetUserName: string

  /**
   * 导图封面
   */
  coverImage: string
}

export interface ShareToOtherMind {
  /**
   * 导图id
   */
  id: string

  /**
   * 导图名称
   */
  name: string

  /**
   * 导图封面
   */
  coverImage: string

  /**
   * 导图创建时间
   */
  createTime: string

  /**
   * 导图更新时间
   */
  updateTime: string

  /**
   * 被分享人集合
   */
  shareUsers: User[]
}

export interface LocationParams {
  /**
   * 登录成功后重定向的url
   */
  redirect_url?: string
}

export interface BreadCrumb {
  /**
   * 面包屑标题
   */
  title: string

  /**
   * 面包屑跳转路由
   */
  routePath?: string

  /**
   * 面包屑存储参数id
   */
  paramId?: string
}

export interface MindStatistic {
  /**
   * 导图总数
   */
  totalCount: number

  /**
   * 本月新增数
   */
  monthAddCount: number

  /**
   * 分享数
   */
  shareCount: number
}
